{{#and (neq page.viewStyle 'DEFAULT') (eq page.psSysPFPlugin null)}}
{{> @macro/extends/view-style/view-style.hbs page=page type="VUE"}}
{{else}}
<template>
    {{#if page.psSysPFPlugin}}
    {{> @macro/plugins/view/view-use.hbs appPlugin=page.psSysPFPlugin}}
    {{else}}
        {{#if page.psViewLayoutPanel.useDefaultLayout}}
    <AppSDViewLayout :class="classNames" :openType="openType">
        <template v-if="!noViewCaption && model.showCaption" #viewHeaderContentLeft>
            <div class="view-header__caption">
                {{> @macro/view/view-caption.hbs}}
                {{> @macro/view/view-datainfo-bar.hbs}}
            </div>
        </template>
        {{#hasCtrl page.ctrls 'TOOLBAR'}}
        <template v-if="store.toolbarItems.length > 0" #viewHeaderContentRight>
        {{#each page.ctrls as | ctrl |}}
            {{#eq ctrl.controlType 'TOOLBAR'}}
            <div class="view-header__toolbar">
                {{> @macro/widgets/toolbar/toolbar.hbs page=page ctrl=ctrl}}
            </div>
            {{/eq}}
        {{/each}}
        </template>
        {{/hasCtrl}}
        <template #default>
        {{#each page.ctrls as | ctrl |}}
            {{#eq ctrl.controlType 'FORM'}}
            {{> @macro/widgets/form-detail/form.hbs ctrl=ctrl}}
            {{/eq}}
        {{/each}}
        </template>
        {{> @macro/view/view-msg.hbs}}          
    </AppSDViewLayout>
        {{else}}
    <div :class="classNames">
        {{#if page.psViewLayoutPanel.rootPSPanelItems}}
            {{#each page.psViewLayoutPanel.rootPSPanelItems as | panelItem |}}
        {{> @macro/widgets/panel-detail/include-panel.hbs type=panelItem.itemType item=panelItem isMultiData=false panel=page.psViewLayoutPanel page=page}}
            {{/each}}
        {{/if}}
    </div>
        {{/if}}
    {{/if}}
</template>

<script lang="ts" setup>
// 基于template/src/views/\{{appModules}}/\{{pages@DEEDITVIEW}}/\{{spinalCase page.codeName}}.vue.hbs生成
{{#if page.psViewLayoutPanel.useDefaultLayout}}
import { AppSDViewLayout } from "@components/layout/sd-view-layout";
{{> @macro/widgets/ctrl/import-ctrl.hbs ctrls=page.ctrls}}
{{else}}
import { AppCtrlPos, AppScrollContainer, AppSimpleFlexContainer, AppStandardContainer, AppTabPanel, AppTabPage } from '@components/layout-element/structure';
    {{#if page.psViewLayoutPanel.viewProxyMode}}
{{> @macro/widgets/ctrl/import-ctrl.hbs ctrls=page.psViewLayoutPanel.psControls}}
    {{else}}
{{> @macro/widgets/ctrl/import-ctrl.hbs ctrls=page.ctrls}}
    {{/if}}
{{/if}}
import { model } from './{{spinalCase page.codeName}}-model';
import {
    useNavParamsBind,
    useEventBind,
{{#hasCtrl page.ctrls 'TOOLBAR'}}
    handleToolbarItemClick,
{{/hasCtrl}}
{{#unless page.psViewLayoutPanel.useDefaultLayout}}
    handleComponentAction,
  {{#hasCtrl page.psViewLayoutPanel.psControls 'TOOLBAR'}}
    handleToolbarItemClick,
  {{/hasCtrl}}
{{/unless}}
    handleCtrlAction,
    handleCtrlInit,
    handleCtrlDestroy,
    getViewClassNames,
} from "@/hooks/use-view";
import {
    EditViewActionType,
	IContext,
	IParam,
    IEvent,
	IEditViewAbility,
	IEditViewControllerParams,
	IEditViewStore,
	EditViewController,
	IEditViewController,
	ILoadingHelper,
} from '@/core';

{{> @macro/view/view-props.hbs}}

{{> @macro/common/emit.hbs name="view" actionType="EditViewActionType" ability="IEditViewAbility"}}
//  样式名称
const classNames = computed(() => {
    return getViewClassNames(model, props);
});

const params: IEditViewControllerParams<EditViewActionType, IEditViewAbility> = {
    name: props.name,
    model,
    evt,
    isLoadDefault: props.isLoadDefault,
    openType: props.openType,
    pLoadingHelper: props.pLoadingHelper,
    handler: (data: IEditViewStore) => { return reactive(data) }
};

{{> @macro/common/controller.hbs name="view" IController="IEditViewController" store="IEditViewStore" ability="IEditViewAbility" controller="EditViewController"}}
</script>
{{/and}}